-- kill_add_drop
-- created by zhuangsl
-- 额外概率掉落物品

return {
    apply = function(prop, baseValue)
        return prop[3];
    end,

    -- 每回合触发
    trigger = function(who, prop, arg)
        -- 概率不满足
        if DungeonM.getRandSeed("kill_add_drop") % 1000 >= prop[3] then
            return;
        end

        local monster = arg;
        -- 不是怪物
        if monster.type ~= OBJECT_TYPE_MONSTER then
            return;
        end

        -- 从怪物原本的掉落里，抽一个物品
        local element = monster:query("element");
        local info = DungeonM.queryElement(element, "args");
        local arr, ret;

        -- 暂时只考虑一般的掉落配置
        if info.drop_rate then
            local rand = DungeonM.getRandSeed("kill_add_drop");

            if type(info.bonus[1]) == 'table' then
                local bonusArgs = info["bonus"];
                arr = fetchElemBySeed(bonusArgs, rand);
                ret = {1, arr["class_id"], arr["amount"]};
            elseif type(info.bonus[2]) == 'table' and type(info.bonus[1]) == 'number' then
                arr = info.bonus[2];
                ret = {1, arr[1 + rand % #arr], info.bonus[3]};
            else
                ret = info.bonus;
            end
        elseif info.bonus then
            -- 没有配置掉落概率就默认是100%的
            ret = info.bonus;
        end

        -- 必须是 {1,8000,2} 这种形式的
        if type(ret) ~= 'table' or #ret ~= 3 then
            return;
        end

        if type(ret[1]) ~= 'number' or type(ret[2]) ~= 'number' or type(ret[3]) ~= 'number' then
            return;
        end

        return ret;
    end,

    record = function(target, prop, path)
        return false;
    end
};